[volume][bind mount]bind propagation设置

参考:Use bind mounts

对于卷和绑定挂载而言,绑定传播(bind propagation)默认设置为rprivate。仅有Linux主机上的绑定挂载才能配置绑定传播

什么是绑定挂载

绑定传播是指在给定绑定挂载或命名卷中创建的挂载是否可以传播到该挂载的副本。考虑一个挂载点/mnt,同时挂载在/tmp上。绑定设置控制/tmp/a上的挂载是否也可以在/mnt/a上使用

每次传播设置都有一个递归对位(recursive counterpoint)。在递归的情况下,考虑/tmp/a也被挂载为/foo。传播设置控制是否存在/mnt/a和(或者)/tmp/a

选项

示例

挂载主机的target/目录到容器的/app/app2,设置第二个挂载点只读,同时设置绑定挂载设置为rslave

实现如下:

# 使用-v选项
$ docker run -d \
  -it \
  --name devtest \
  -v "$(pwd)"/target:/app \
  -v "$(pwd)"/target:/app2:ro,rslave \
  nginx:latest

# 使用--mount选项
$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

当在/app中创建文件夹foo时,能够在/app2中出现